#include <REGX52.H>
#include "OneWire.h"

#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVENT_T 0x44
#define DS18B20_READ_SCRATCHPAD 0xBE

/**
  * @brief		温度转化一次
  * @parm		无
  * @retval		无
  */
void DS18B20_ConventT()
{
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);	//跳过ROM
	OneWire_SendByte(DS18B20_CONVENT_T);	//温度转化
}

float DS18B20_ReadT()
{
	unsigned char HTemp, LTemp;
	int Temp = 0;
	float T;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);			//跳过ROM
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);	//读存储器
	LTemp = OneWire_ReceiveByte();				//低位
	HTemp = OneWire_ReceiveByte();				//高位
	Temp = (HTemp << 8) | LTemp;				//HTemp左移8为拼接在LTemp前
	T = Temp / 16.0;							//Temp右移4位
	return T;
}
